﻿using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using OpenLightGroup.Common.ApplicationServices;

namespace Examples
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        // After the Frame navigates, ensure the HyperlinkButton representing the current page is selected
        private void ContentFrame_Navigated(object sender, NavigationEventArgs e)
        {
            foreach (UIElement child in this.LinksStackPanel.Children)
            {
                HyperlinkButton hb = child as HyperlinkButton;
                if (hb != null && hb.NavigateUri != null)
                {
                    if (hb.NavigateUri.ToString().Equals(e.Uri.ToString()))
                    {
                        VisualStateManager.GoToState(hb, "ActiveLink", true);
                    }
                    else
                    {
                        VisualStateManager.GoToState(hb, "InactiveLink", true);
                    }
                }
            }

            EventLogger.LogInformation("Content Frame Navigated: " + e.Uri);

            //Note: Used to demonstrate the client side throttling of event requests.
            for (int i = 0; i < 20; i++)
                EventLogger.LogInformation("Event Number: " + i);
           
        }

        // If an error occurs during navigation, show an error window
        private void ContentFrame_NavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            EventLogger.LogError(e.Exception);

            e.Handled = true;
            ChildWindow errorWin = new ErrorWindow(e.Uri);
            errorWin.Show();
        }
    }
}